#pragma once
#include <BWAPI.h>
#include <BWTA.h>
#include <Arbitrator.h>

class EnhancedUI
{
public:
	EnhancedUI();

	void setArbitrator(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator);
	void setAnalyzed(bool analyzed);

	void update() const;
	bool onSendText(std::string text);
private:
	Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator;
	void drawBases() const;
	void drawTerrain() const;
	void drawProgress() const;
	void drawProgressBar(BWAPI::Position pos, double progressFaction, BWAPI::Color innerBar = BWAPI::Colors::Green) const;
	void drawUnitSymbols() const;
	void drawEnemySymbols() const;
	void drawFormations() const;
	void drawVisibility() const;

	void showManagerData() const;
    void drawStats() const;
    void showPlayers();
    void showForces();

	bool analyzed;
	//Drawing flags
	bool show_stats;
	bool show_visibility_data;
	bool show_attack_lines;
	bool show_move_paths;
	bool show_formations;
	bool show_idle;
	bool show_enemy_sight_range;
	bool show_enemy_attack_range;
	bool show_manager_assignments;
};
